home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ahoy: Best of 1985
/
Ahoy_Best_of_1985_1986_Double_L.d64
/
tile time may'85
(
.txt
)
< prev
Wrap
Commodore BASIC
|
2022-10-26
|
6KB
|
195 lines
1 rem -------- the tile game ----------
2 rem (c) murdock & blackburn '84
3 rem 10/15/1984
4 rem
100 forx=1to6:readch:co$(x)=chr$(ch):next
110 data 28,158,156,30,150,5
120 b1$=chr$(154):b2$=chr$(31):b3$=chr$(152):c1$=b1$:c2$=chr$(144)
130 sc$=chr$(147):hm$=chr$(19)
135 print sc$;co$(6)
140 poke53280,2:poke53281,2:printspc(249)"hold on, just a second"
150 do$=hm$:forx=1to24:do$=do$+chr$(17):next
160 u3$="":forx=1to3:u3$=u3$+chr$(145):next
170 r3$="":forx=1to3:r3$=r3$+chr$(29):next
180 l5$="":forx=1to5:l5$=l5$+chr$(157):next
190 sp$="":forx=1to39:sp$=sp$+" ":next
200 sz$=chr$(17)+chr$(29)+chr$(110)+chr$(163)+chr$(109)+chr$(157)+chr$(157)
210 sz$=sz$+chr$(157)+chr$(17)+chr$(125)
220 t$=chr$(111)+chr$(183)+chr$(183)+chr$(183)+chr$(112)+l5$+chr$(17)
230 t$=t$+chr$(165)+r3$+chr$(167)+l5$+chr$(17)
240 t$=t$+chr$(165)+r3$+chr$(167)+l5$+chr$(17)
250 t$=t$+chr$(108)+chr$(175)+chr$(175)+chr$(175)+chr$(186)+l5$+u3$
260 bs$=b2$:forx=1to5:bs$=bs$+chr$(166):next
270 bs$=bs$+l5$+chr$(17):bt$="":for x=1to4:bt$=bt$+bs$:next:bs$=bt$+b1$
280 dimch$(24):for x=1to24:readch$:ch$(x)=ch$:next
290 data a,b,c,d,e
295 data f,g,h,i,j
300 data k,l,m,n,o
305 data p,q,r,s,t
310 data u,v,w,x
320 if peek(49475)<>234 or peek(49806)<>24then gosub9010
330 px=0:poke53280,px:poke53281,px
340 printsc$:k$=""
350 printdo$;sp$;b1$;:gosub8010:goto360
360 printhm$;
370 row=5:col=1:br=5:bc=5:mv=0:cu$=t$
380 print do$;spc(7);co$(2);"joystick or keyboard (j/k)"c2$;
390 getkk$:ifkk$=""then390
400 ifkk$="j" then420
410 ifkk$<>"k" then390
420 printdo$;sp$;:gosub3040
430 rem *** mix y/n print ***
440 printco$(4);do$;left$(sp$,15);"mix (y/n)";
450 geta$:ifa$=""then450
460 ifa$= "y"then printdo$;sp$;:gosub3040:gosub4010:mv=0:printdo$;sp$;:goto490
470 ifa$= "n"then printdo$;sp$;:goto490
480 goto450
490 cu$=t$:gosub3040:ifkk$="k" then7000
500 goto2010
1000 rem *** scroll routine ***
1010 mv=mv+1:printdo$b2$"move"b1$;mv;
1020 on d goto1030,1050,1060,1080
1030 ml=49661:r=5:vu=0:col=col-hu
1040 goto1090:rem *left
1050 ml=49735:r=5:vu=0:goto1090:rem *rt
1060 ml=49416:r=4:hu=0:row=row-vu
1070 goto1090:rem *up
1080 ml=49483:r=4:hu=0:goto1090:rem *dn
1090 l=(col-1)*5+8:t=(row-1)*4+2
1100 h=(hu+1)*5:v=(vu+1)*4
1110 poke251,l:poke252,t:poke253,h-1:poke254,v-1
1120 gosub6510
1130 for x=1tor
1140 poke254,v-1:poke2,1
1150 sys ml
1160 next
1170 poke s+4,16
1180 return
1500 get k$:if k$=""then1500
1510 return
2000 rem *** read joy stick ***
2010 jv=peek(56320)
2020 getk$:ifk$=chr$(147)then350
2030 fr=jvand16:if fr<>16then gosub5010:goto2010
2040 jv=15-(jvand15)
2050 if jv=0 then gosub2110:goto2010
2060 if jv=1 and row>1 then row=row-1:gosub3010:goto2010
2070 if jv=2 and row<5 then row=row+1:gosub3010:goto2010
2080 if jv=8 and col<5 then col=col+1:gosub3010:goto2010
2090 if jv=4 and col>1 then col=col-1:gosub3010:goto2010
2100 goto2010:rem * invalid direction *
2110 printc1$;t$;
2120 printc2$;t$;
2130 return
3000 rem ******* set cursor *******
3010 if fl then cu$=bs$
3020 printc1$;cu$;c2$;
3030 cu$=t$
3040 r=(row-1)*4+2:c=(col-1)*5+8
3050 poke251,r:poke252,c
3060 sys 49806
3070 printcu$;
3080 if row=br and col=bc then fl=1:goto3100
3090 fl=0
3100 return
4000 rem ******* random mix *******
4010 a=rnd(rnd(0)):printleft$(do$,5);b2$;"mixing"b1$;:gosub3040
4020 for mx=1 to 20
4030 gosub4180
4040 ifa2=1thenrow=br:col=bc-a:goto4060
4050 row=br:col=bc+a
4060 if col<1 or col>5 then4030
4070 gosub3010:gosub5010
4080 getk$:ifk$<>"" then4160
4090 gosub4180
4100 ifa2=1thencol=bc:row=br-a:goto4120
4110 col=bc:row=br+a
4120 if row<1 or row>5 then4090
4130 gosub3010:gosub5010
4140 getk$:ifk$<>"" then4160
4150 next
4160 printleft$(do$,5);left$(sp$,6);:gosub3040
4170 return
4180 a=int(rnd(1)*4)+1
4190 a2=int(rnd(1)*2)
4200 return
5000 rem *** prepare to scroll ***
5010 if col<>bc then5060
5020 if br=row then return
5030 vu=abs(row-br):d=4:tr=row+1
5040 if br<row then d=3:tr=row-1
5050 br=row:gosub1010:row=tr:gosub3040:return
5060 if row<>br then gosub6010:return
5070 hu=abs(col-bc):d=2:tc=col+1
5080 if bc<col then d=1:tc=col-1
5090 bc=col:gosub1010:col=tc:gosub3040:return
5100 if col<>bc then return
6000 rem ******* buzzer *******
6010 fora=1to8:poke54296,15:fort=1to3:next:poke54296,0:fort=1to3:next:next
6020 return
6500 rem *** pong subroutine ***
6510 s=54272
6520 poke s+1,20
6530 poke s+5,9
6540 poke s+6,9
6550 poke s+24,4
6560 poke s+4,17
6570 return
7000 rem *** get keyboard input ***
7010 getk$:ifk$="" then gosub2110:goto7010
7020 ifk$=chr$(147)then350
7030 ifk$=" " then gosub5000:goto7010
7040 if k$="a" and row>1 then row=row-1:gosub3010:goto7010
7050 if k$="z" and row<5 then row=row+1:gosub3010:goto7010
7060 if k$="." and col<5 then col=col+1:gosub3010:goto7010
7070 if k$="," and col>1 then col=col-1:gosub3010:goto7010
7080 goto7010
8000 rem ******* draw board *******
8010 ch=1:printb1$;:ifk$=chr$(147)then8100
8020 printhm$;spc(6);chr$(117);:forx=1to27:printchr$(96);:next:printchr$(105)
8030 printspc(6)chr$(98);" ";:forx=1to25:printchr$(164);:next:print" "chr$(98)
8040 printleft$(do$,2):for x=1 to 20
8050 print spc(6);chr$(98);chr$(167);spc(25);chr$(180);chr$(98)
8060 next
8070 printhm$;left$(do$,23);
8080 printspc(6)chr$(98);" ";:forx=1to25:printchr$(163);:next:print" "chr$(98)
8090 printspc(6);chr$(106);:forx=1to27:printchr$(96);:next:printchr$(107)
8100 for row=1 to 5
8110 for col=1 to 5
8120 if row=5 and col=5 then printb3$;:cu$=bs$:gosub3040:goto8170
8130 printb3$;:cu$=bs$:gosub 3040
8140 printb1$;:cu$=t$:gosub3040
8150 printb2$;:cu$=sz$:gosub3040
8160 printco$(row);ch$(ch);b2$;chr$(125):ch=ch+1
8170 next col
8180 next row
8190 return
9000 rem ******* ml routines *******
9010 fori=49416to49815
9020 readt:pokei,t:next
9030 return
49416 data32,226,193,165,251,166,252,32,155,193,32,205,193,166,254,202,48
49433 data21,24,165,208,105,40,133,210,133,214,165,209,105,0,133,211,32
49450 data119,193,202,16,235,164,253,185,32,192,145,208,185,72,192,145,212
49467 data136,16,243,32,226,193,88,96,234,234,234,234,234,234,234,234,32
49484 data226,193,32,132,194,170,165,251,32,155,193,32,205,193,166,254,202
49501 data240,208,56,165,208,233,40,133,210,133,214,165,209,233,0,133,211
49518 data24,32,119,193,202,16,234,48,184,41,3,9,216,133,215,164,253
49535 data177,210,145,208,177,214,145,212,136,16,245,165,211,133,209,165,210
49552 data133,208,165,215,133,213,165,214,133,212,96,72,169,216,133,208,172
49569 data136,2,136,132,209,24,165,208,105,40,133,208,165,209,105,0,133
49586 data209,202,16,240,24,104,101,208,133,208,133,212,165,209,105,0,133
49603 data209,41,3,9,216,133,213,164,253,96,165,2,208,3,169,32,44
49620 data177,208,153,32,192,177,212,153,72,192,136,16,236,96,120,162,30
49637 data181,208,72,189,0,192,149,208,104,157,0,192,202,16,241,96,234
49654 data234,234,234,234,234,234,234,32,226,193,32,132,194,165,251,166,211
49671 data32,155,193,160,0,177,208,133,210,177,212,72,144,13,200,177,208
49688 data72,177,212,136,145,212,104,145,208,200,196,253,144,239,165,2,208
49705 data3,169,32,44,165,210,145,208,104,145,212,198,211,198,254,16,201
49722 data32,226,193,88,96,234,234,234,234,234,234,234,234,32,226,193,32
49739 data132,194,165,251,166,211,32,155,193,177,208,133,210,177,212,72,164
49756 data253,240,15,136,177,208,72,177,212,200,145,212,104,145,208,136,208
49773 data241,165,2,208,3,169,32,44,165,210,145,208,104,145,212,198,211
49790 data198,254,16,203,48,182,166,252,138,24,101,254,133,211,96,234,24
49807 data164,252,166,251,32,240,255,96,234